package com.yidu.action;


import java.text.ParseException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;

import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.yidu.common.Pages;
import com.yidu.common.Tools;
import com.yidu.domain.ListenProduction;
import com.yidu.domain.ListenProductionDetail;
import com.yidu.domain.ListenPurchase;
import com.yidu.service.ListenProductionService;

/**
 * @title 生产计划Controller类 
 * @author 江宇
 * @dateTime 2019年1月14日
 */
@Controller
@RequestMapping("/listenProduction")
public class ListenProductionController {
	@Resource
	ListenProductionService listenProductionService;
	
	/**
     * @title 查询生产计划
     * @param Map
     * @return List
     * @author 江宇
     * @dateTime 2018年12月17日
     * @versions 1.0
     */
	@RequestMapping("/findProduction")
	@ResponseBody
	public Map<String, Object> findProduction(ListenProduction prod) {
		Map<String, Object> map=new HashMap<>();
		//如果制造状态不为空赋值
		if(prod.getManufactureType()!=null) {
			map.put("manufactureType", prod.getManufactureType());
		}
		//如果生产许可不为空赋值
		if(prod.getProdPermit()!=null) {
			map.put("prodPermit", prod.getProdPermit());
		}
		//如果开始时间不为空赋值
		if(!Tools.isEmpty(prod.getProdStartTime())) {
			map.put("startTime", prod.getProdStartTime()+" 00:00:00");
		}
		//如果结束时间不为空赋值
		if(!Tools.isEmpty(prod.getProdEndTime())) {
			map.put("endTime", prod.getProdEndTime()+" 23:59:59");
		}
		//如果前台传来的页数和行数不为空赋值
		if(prod.getPage()!=null && prod.getLimit()!=null) {
			Pages page=new Pages();
			page.setCurPage(prod.getPage());
			page.setMaxResult(prod.getLimit());
			
			map.put("firstRows", page.getFirstRows());
			map.put("maxResult", page.getMaxResult());
		}
		//调用查询生产计划的方法
		List<ListenProduction> list=listenProductionService.findProduction(map);
		//调用查询生产计划行数的方法
		int rows=listenProductionService.findProductionCount(map);
		//创建生产计划List集合
		List<ListenProduction> prodList=new ArrayList<>();
		//循环查询的生产计划List集合
		for (ListenProduction listenProduction : list) {
			//创建生产计划类对象
			ListenProduction prod2=new ListenProduction();
			//赋值
			BeanUtils.copyProperties(listenProduction, prod2);
			//时间转化
			prod2.setProdStartTime(Tools.SDF_DATE.format(listenProduction.getStartTime()));
			prod2.setProdEndTime(Tools.SDF_DATE.format(listenProduction.getEndTime()));
			prodList.add(prod2);
		}
		
		Map<String, Object> layuiMap=new HashMap<>();
		
		layuiMap.put("code", 0);
		layuiMap.put("msg", "");
		layuiMap.put("count",rows);
		//将list放入map中
		layuiMap.put("data", prodList);
		return layuiMap;
	}
	
	/**
     * @title 根据生产Id查询
     * @param String
     * @return ListenProduction
     * @author 江宇
     * @dateTime 2018年12月18日
     * @versions 1.0
     */
	@RequestMapping("/findByProdId")
	@ResponseBody
	public ListenProduction findByProdId(String prodId) {
		ListenProduction prod=listenProductionService.findByProdId(prodId);
		prod.setProdStartTime(Tools.SDF_DATE.format(prod.getStartTime()));
		prod.setProdEndTime(Tools.SDF_DATE.format(prod.getEndTime()));
		return prod;
	}
	
	/**
     * @title 修改生产计划
     * @param ListenProduction
     * @return int
     * @author 江宇
     * @dateTime 2018年12月18日
     * @versions 1.0
     */
	@RequestMapping("/deleteProduction")
	@ResponseBody
	
	public int deleteProuction(ListenProduction pord) {
		int rows=listenProductionService.updateProduction(pord);
		return rows;
	}
	
	/**
     * @title 增加和修改生产计划的方法 
     * @param String
     * @return int
     * @author 江宇
     * @dateTime 2018年12月18日
     * @versions 1.0
     */
	@RequestMapping("/addOrUpdate")
	@ResponseBody
	
	public int addOrUpdate(String production, String musicalText,Integer addOrUpdate,HttpSession session) throws ParseException {
		int rows=listenProductionService.addOrUpdate(production, musicalText, addOrUpdate,session);
		return rows;
	}
	
	/**
     * @title 修改生产计划 
     * @param ListenProduction
     * @return int
     * @author 江宇
     * @dateTime 2018年12月26日
     * @versions 1.0
     */
	@RequestMapping("/update")
	@ResponseBody
	public int update(ListenProduction prod) {
		int rows=listenProductionService.update(prod);
		return rows;
	}
}

